﻿using System.Collections.Generic;
using UtilZ.Dotnet.Ex.ValueDescription;

namespace UtilZ.Dotnet.Ex.Constants
{
    /// <summary>
    /// windows C++ errno.h 中定义的错误信息码 
    /// </summary>
    public class WindowsErrnoConstant
    {
        private readonly static Dictionary<int, ConstantValueItem> _group = null;
        static WindowsErrnoConstant()
        {
            _group = new Dictionary<int, ConstantValueItem>()
            {
                {EPERM,new ConstantValueItem("不允许执行该操作",null,EPERM) },
                {ENOENT,new ConstantValueItem("没有此文件或目录",null,ENOENT) },
                {ESRCH,new ConstantValueItem("没有此进程",null,ESRCH) },
                {EINTR,new ConstantValueItem("函数中断",null,EINTR) },
                {EIO,new ConstantValueItem("I/O 错误",null,EIO) },

                {ENXIO,new ConstantValueItem("没有此设备或地址",null,ENXIO) },
                {E2BIG,new ConstantValueItem("自变量列表太长",null,E2BIG) },
                {ENOEXEC,new ConstantValueItem("执行格式错误","尝试执行非可执行文件或可执行文件格式无效的文件",ENOEXEC) },
                {EBADF,new ConstantValueItem("文件编号错误","有两个可能的原因：1) 指定的文件描述符不是有效值或未引用打开的文件；2) 尝试写入到已打开进行只读访问的文件或设备。 ",EBADF) },
                {ECHILD,new ConstantValueItem("没有生成的进程",null,ECHILD) },

                {EAGAIN,new ConstantValueItem("没有更多进程","尝试创建新进程失败，因为没有更多的进程槽、没有足够的内存或已达到最大嵌套级别",EAGAIN) },
                {ENOMEM,new ConstantValueItem("无法为尝试的运算符提供足够的内存","例如，如果内存不足，无法执行子进程，或者无法满足调用中的 _getcwd 分配请求，则可能会出现此消息",ENOMEM) },
                {EACCES,new ConstantValueItem("权限被拒绝","文件的权限设置不允许指定的访问，尝试以与文件属性不兼容的方式访问 (或在某些情况下访问目录",EACCES) },
                {EFAULT,new ConstantValueItem("地址错误",null,EFAULT) },
                {EBUSY,new ConstantValueItem("设备或资源忙碌",null,EBUSY) },

                {EEXIST,new ConstantValueItem("存在文件","尝试创建已存在的文件,例如，在 _open 调用中指定 _O_CREAT 和 _O_EXCL 标志，但命名的文件已存在",EEXIST) },
                {EXDEV,new ConstantValueItem("跨设备链接","尝试将文件移至不同的设备（使用 rename 函数）",EXDEV) },
                {ENODEV,new ConstantValueItem("没有此设备",null,ENODEV) },
                {ENOTDIR,new ConstantValueItem("不是目录",null,ENOTDIR) },
                {EISDIR,new ConstantValueItem("是目录",null,EISDIR) },

                {EINVAL,new ConstantValueItem("无效的参数","为某个函数的自变量之一给定了无效值,例如，在定位由调用 fseek) (的文件指针时为源提供的值位于文件开头之前",EINVAL) },
                {ENFILE,new ConstantValueItem("系统中打开的文件太多",null,ENFILE) },
                {EMFILE,new ConstantValueItem("打开的文件太多","没有更多文件说明符可用，因此无法打开更多文件",EMFILE) },
                {ENOTTY,new ConstantValueItem("不适当的 I/O 控制操作",null,ENOTTY) },
                {EFBIG,new ConstantValueItem("文件太大",null,EFBIG) },

                {ENOSPC,new ConstantValueItem("设备上没有剩余空间","设备上没有可供写入的其他空间（例如，当磁盘已满时）",ENOSPC) },
                {ESPIPE,new ConstantValueItem("搜寻无效",null,ESPIPE) },
                {EROFS,new ConstantValueItem("只读文件系统",null,EROFS) },
                {EMLINK,new ConstantValueItem("链接太多",null,EMLINK) },
                {EPIPE,new ConstantValueItem("管道损坏",null,EPIPE) },

                {EDOM,new ConstantValueItem("数学自变量","数学函数的参数不在函数的域中",EDOM)},
                {ERANGE,new ConstantValueItem("结果太大","数学函数的自变量太大，造成结果中的有效位部分或全部丢失。 当参数大于预期值时（例如，当 _getcwd 的 buffer 参数大于预期值时），在其他函数中也可能发生此错误。",ERANGE) },
                {EDEADLK,new ConstantValueItem("将会发生资源死锁",null,EDEADLK) },
                {ENAMETOOLONG,new ConstantValueItem("文件名太长",null,ENAMETOOLONG) },
                {ENOLCK,new ConstantValueItem("无可用锁",null,ENOLCK) },

                {ENOSYS,new ConstantValueItem("功能不受支持",null,ENOSYS) },
                {ENOTEMPTY,new ConstantValueItem("目录不为空",null,ENOTEMPTY) },
                {EILSEQ,new ConstantValueItem("非法字节序列","非法字节序列（例如，在 MBCS 字符串中）",EILSEQ) },
                {STRUNCATE,new ConstantValueItem("字符串复制或串联导致字符串被截断","字符串复制或串联导致字符串被截断。 请参阅 _TRUNCATE",STRUNCATE) },
                //{EPERM,new ConstantValueItem("","",EPERM) },


                //下列值支持POSIX


                {EADDRINUSE,new ConstantValueItem("正在使用的地址",null,EADDRINUSE) },
                {EADDRNOTAVAIL,new ConstantValueItem("地址不可用",null,EADDRNOTAVAIL) },
                {EAFNOSUPPORT,new ConstantValueItem("地址系列不受支持",null,EAFNOSUPPORT) },
                {EALREADY,new ConstantValueItem("连接已经进行",null,EALREADY) },
                {EBADMSG,new ConstantValueItem("错误消息",null,EBADMSG) },

                {ECANCELED,new ConstantValueItem("操作已取消",null,ECANCELED) },
                {ECONNABORTED,new ConstantValueItem("连接已中止",null,ECONNABORTED) },
                {ECONNREFUSED,new ConstantValueItem("连接被拒绝",null,ECONNREFUSED) },
                {ECONNRESET,new ConstantValueItem("连接重置",null,ECONNRESET) },
                {EDESTADDRREQ,new ConstantValueItem("需要目标地址",null,EDESTADDRREQ) },

                {EHOSTUNREACH,new ConstantValueItem("无法访问主机",null,EHOSTUNREACH) },
                {EIDRM,new ConstantValueItem("已删除标识符",null,EIDRM) },
                {EINPROGRESS,new ConstantValueItem("操作正在进行",null,EINPROGRESS) },
                {EISCONN,new ConstantValueItem("已连接",null,EISCONN) },
                {ELOOP,new ConstantValueItem("符号链接级别过多",null,ELOOP) },

                {EMSGSIZE,new ConstantValueItem("消息大小",null,EMSGSIZE) },
                {ENETDOWN,new ConstantValueItem("网络中断",null,ENETDOWN) },
                {ENETRESET,new ConstantValueItem("网络重置",null,ENETRESET) },
                {ENETUNREACH,new ConstantValueItem("无法访问网络",null,ENETUNREACH) },
                {ENOBUFS,new ConstantValueItem("无缓冲空间",null,ENOBUFS) },

                {ENODATA,new ConstantValueItem("无可用消息",null,ENODATA) },
                {ENOLINK,new ConstantValueItem("无链接",null,ENOLINK) },
                {ENOMSG,new ConstantValueItem("无消息",null,ENOMSG) },
                {ENOPROTOOPT,new ConstantValueItem("无协议选项",null,ENOPROTOOPT) },
                {ENOSR,new ConstantValueItem("无流资源",null,ENOSR) },

                {ENOSTR,new ConstantValueItem("不是流",null,ENOSTR) },
                {ENOTCONN,new ConstantValueItem("未连接",null,ENOTCONN) },
                {ENOTRECOVERABLE,new ConstantValueItem("状态不可恢复",null,ENOTRECOVERABLE) },
                {ENOTSOCK,new ConstantValueItem("不是套接字",null,ENOTSOCK) },
                {ENOTSUP,new ConstantValueItem("不支持",null,ENOTSUP) },

                {EOPNOTSUPP,new ConstantValueItem("不支持操作",null,EOPNOTSUPP) },
                {EOTHER,new ConstantValueItem("其他",null,EOTHER) },
                {EOVERFLOW,new ConstantValueItem("值太大",null,EOVERFLOW) },
                {EOWNERDEAD,new ConstantValueItem("所有者亡",null,EOWNERDEAD) },
                {EPROTO,new ConstantValueItem("协议错误",null,EPROTO) },

                {EPROTONOSUPPORT,new ConstantValueItem("协议不受支持",null,EPROTONOSUPPORT) },
                {EPROTOTYPE,new ConstantValueItem("协议类型错误",null,EPROTOTYPE) },
                {ETIME,new ConstantValueItem("流超时",null,ETIME) },
                {ETIMEDOUT,new ConstantValueItem("已超时",null,ETIMEDOUT) },
                {ETXTBSY,new ConstantValueItem("文本文件繁忙",null,ETXTBSY) },

                {EWOULDBLOCK,new ConstantValueItem("操作将阻塞",null,EWOULDBLOCK) },
            };
        }


        /// <summary>
        /// 根据值获取名称
        /// </summary>
        /// <param name="code">错误码</param>
        /// <returns>值对应的名称</returns>
        public static string GetName(int code)
        {
            ConstantValueItem item;
            if (_group.TryGetValue(code, out item))
            {
                return item.DisplayName;
            }
            else
            {
                return GetErrorString(code);
                //return $"未知的值\"{code}\"";
            }
        }

        /// <summary>
        /// 根据值获取描述
        /// </summary>
        /// <param name="code">错误码</param>
        /// <returns>值对应的名称</returns>
        public static string GetDes(int code)
        {
            ConstantValueItem item;
            if (_group.TryGetValue(code, out item))
            {
                return item.Description;
            }
            else
            {
                return GetErrorString(code);
                //return $"未知的值\"{value}\"";
            }
        }








        #region Error codes
        /// <summary>
        /// 成功
        /// </summary>
        public const int SUCCES = 0;

        /// <summary>
        /// 不允许执行该操作
        /// </summary>
        public const int EPERM = 1;

        /// <summary>
        /// 没有此文件或目录。 指定的文件或目录不存在或找不到。 
        /// 只要指定的文件不存在，或者路径的组件未指定现有目录，就会出现此消息
        /// </summary>
        public const int ENOENT = 2;

        /// <summary>
        /// 没有此进程
        /// </summary>
        public const int ESRCH = 3;

        /// <summary>
        /// 函数中断
        /// </summary>
        public const int EINTR = 4;

        /// <summary>
        /// I/O 错误
        /// </summary>
        public const int EIO = 5;




        /// <summary>
        /// 没有此设备或地址
        /// </summary>
        public const int ENXIO = 6;

        /// <summary>
        /// 自变量列表太长
        /// </summary>
        public const int E2BIG = 7;

        /// <summary>
        /// 执行格式错误。 尝试执行非可执行文件或可执行文件格式无效的文件
        /// </summary>
        public const int ENOEXEC = 8;

        /// <summary>
        /// 文件编号错误。 有两个可能的原因：
        /// 1) 指定的文件描述符不是有效值或未引用打开的文件。 
        /// 2) 尝试写入到已打开进行只读访问的文件或设备
        /// </summary>
        public const int EBADF = 9;

        /// <summary>
        /// 没有生成的进程
        /// </summary>
        public const int ECHILD = 10;





        /// <summary>
        /// 没有更多进程、没有足够内存或达到最大嵌套级别。 
        /// 尝试创建新进程失败，因为没有更多的进程槽、没有足够的内存或已达到最大嵌套级别
        /// </summary>
        public const int EAGAIN = 11;

        /// <summary>
        /// 无法为尝试的运算符提供足够的内存。 例如，如果内存不足，无法执行子进程，
        /// 或者无法满足调用中的 _getcwd 分配请求，则可能会出现此消息
        /// </summary>
        public const int ENOMEM = 12;

        /// <summary>
        /// 权限被拒绝。 文件的权限设置不允许指定的访问，尝试以与文件属性不兼容的方式访问 (或在某些情况下访问目录) 。
        /// 例如，尝试从未打开的文件读取时，可能会发生错误。 或者，在尝试打开现有只读文件进行写入时，或者打开目录而不是文件。 
        /// 在 MS-DOS 操作系统版本 3.0 以及更高版本下，EACCES 也可能表示锁定或共享冲突。
        /// 在尝试重命名文件或目录或者删除现有目录时也可能发生错误
        /// </summary>
        public const int EACCES = 13;

        /// <summary>
        /// 地址错误
        /// </summary>
        public const int EFAULT = 14;

        /// <summary>
        /// 设备或资源忙碌
        /// </summary>
        public const int EBUSY = 16;





        /// <summary>
        /// 存在文件。 尝试创建已存在的文件。 
        /// 例如，在 _open 调用中指定 _O_CREAT 和 _O_EXCL 标志，但命名的文件已存在
        /// </summary>
        public const int EEXIST = 17;

        /// <summary>
        /// 跨设备链接。 尝试将文件移至不同的设备（使用 rename 函数）
        /// </summary>
        public const int EXDEV = 18;

        /// <summary>
        /// 没有此设备
        /// </summary>
        public const int ENODEV = 19;

        /// <summary>
        /// 不是目录
        /// </summary>
        public const int ENOTDIR = 20;

        /// <summary>
        /// 是目录
        /// </summary>
        public const int EISDIR = 21;





        /// <summary>
        /// 无效的参数。 为某个函数的自变量之一给定了无效值。 
        /// 例如，在定位由调用 fseek) (的文件指针时为源提供的值位于文件开头之前
        /// </summary>
        public const int EINVAL = 22;

        /// <summary>
        /// 系统中打开的文件太多
        /// </summary>
        public const int ENFILE = 23;

        /// <summary>
        /// 打开的文件太多。 没有更多文件说明符可用，因此无法打开更多文件
        /// </summary>
        public const int EMFILE = 24;

        /// <summary>
        /// 不适当的 I/O 控制操作
        /// </summary>
        public const int ENOTTY = 25;

        /// <summary>
        /// 文件太大
        /// </summary>
        public const int EFBIG = 27;





        /// <summary>
        /// 设备上没有剩余空间。 设备上没有可供写入的其他空间（例如，当磁盘已满时）
        /// </summary>
        public const int ENOSPC = 28;

        /// <summary>
        /// 搜寻无效
        /// </summary>
        public const int ESPIPE = 29;

        /// <summary>
        /// 只读文件系统
        /// </summary>
        public const int EROFS = 30;

        /// <summary>
        /// 链接太多
        /// </summary>
        public const int EMLINK = 31;

        /// <summary>
        /// 管道损坏
        /// </summary>
        public const int EPIPE = 32;




        /// <summary>
        /// 数学自变量。 数学函数的参数不在函数的域中
        /// </summary>
        public const int EDOM = 33;

        /// <summary>
        /// 结果太大。 数学函数的自变量太大，造成结果中的有效位部分或全部丢失。 
        /// 当参数大于预期值时（例如，当 _getcwd 的 buffer 参数大于预期值时），在其他函数中也可能发生此错误。	
        /// </summary>
        public const int ERANGE = 34;

        /// <summary>
        /// 将会发生资源死锁
        /// </summary>
        public const int EDEADLK = 36;

        ///// <summary>
        ///// 与 EDEADLK 相同，以便与早期的 Microsoft C 版本兼容
        ///// </summary>
        //public const int EDEADLOCK = 36;

        /// <summary>
        /// 文件名太长
        /// </summary>
        public const int ENAMETOOLONG = 38;

        /// <summary>
        /// 无可用锁
        /// </summary>
        public const int ENOLCK = 39;




        /// <summary>
        /// 功能不受支持
        /// </summary>
        public const int ENOSYS = 40;

        /// <summary>
        /// 目录不为空
        /// </summary>
        public const int ENOTEMPTY = 41;

        /// <summary>
        /// 非法字节序列（例如，在 MBCS 字符串中）
        /// </summary>
        public const int EILSEQ = 42;

        /// <summary>
        /// 字符串复制或串联导致字符串被截断。 请参阅 _TRUNCATE
        /// </summary>
        public const int STRUNCATE = 80;

        #endregion




        #region 下列值支持POSIX

        /// <summary>
        /// 正在使用的地址
        /// </summary>
        public const int EADDRINUSE = 100;

        /// <summary>
        /// 地址不可用
        /// </summary>
        public const int EADDRNOTAVAIL = 101;

        /// <summary>
        /// 地址系列不受支持
        /// </summary>
        public const int EAFNOSUPPORT = 102;

        /// <summary>
        /// 连接已经进行
        /// </summary>
        public const int EALREADY = 103;

        /// <summary>
        /// 错误消息
        /// </summary>
        public const int EBADMSG = 104;




        /// <summary>
        /// 操作已取消
        /// </summary>
        public const int ECANCELED = 105;

        /// <summary>
        /// 连接已中止
        /// </summary>
        public const int ECONNABORTED = 106;

        /// <summary>
        /// 连接被拒绝
        /// </summary>
        public const int ECONNREFUSED = 107;

        /// <summary>
        /// 连接重置
        /// </summary>
        public const int ECONNRESET = 108;

        /// <summary>
        /// 需要目标地址
        /// </summary>
        public const int EDESTADDRREQ = 109;




        /// <summary>
        /// 无法访问主机
        /// </summary>
        public const int EHOSTUNREACH = 110;

        /// <summary>
        /// 已删除标识符
        /// </summary>
        public const int EIDRM = 111;

        /// <summary>
        /// 操作正在进行
        /// </summary>
        public const int EINPROGRESS = 112;

        /// <summary>
        /// 已连接
        /// </summary>
        public const int EISCONN = 113;

        /// <summary>
        /// 符号链接级别过多
        /// </summary>
        public const int ELOOP = 114;




        /// <summary>
        /// 消息大小
        /// </summary>
        public const int EMSGSIZE = 115;

        /// <summary>
        /// 网络中断
        /// </summary>
        public const int ENETDOWN = 116;

        /// <summary>
        /// 网络重置
        /// </summary>
        public const int ENETRESET = 117;

        /// <summary>
        /// 无法访问网络
        /// </summary>
        public const int ENETUNREACH = 118;

        /// <summary>
        /// 无缓冲空间
        /// </summary>
        public const int ENOBUFS = 119;




        /// <summary>
        /// 无可用消息
        /// </summary>
        public const int ENODATA = 120;

        /// <summary>
        /// 无链接
        /// </summary>
        public const int ENOLINK = 121;

        /// <summary>
        /// 无消息
        /// </summary>
        public const int ENOMSG = 122;

        /// <summary>
        /// 无协议选项
        /// </summary>
        public const int ENOPROTOOPT = 123;

        /// <summary>
        /// 无流资源
        /// </summary>
        public const int ENOSR = 124;




        /// <summary>
        /// 不是流
        /// </summary>
        public const int ENOSTR = 125;

        /// <summary>
        /// 未连接
        /// </summary>
        public const int ENOTCONN = 126;

        /// <summary>
        /// 状态不可恢复
        /// </summary>
        public const int ENOTRECOVERABLE = 127;

        /// <summary>
        /// 不是套接字
        /// </summary>
        public const int ENOTSOCK = 128;

        /// <summary>
        /// 不支持
        /// </summary>
        public const int ENOTSUP = 129;




        /// <summary>
        /// 不支持操作
        /// </summary>
        public const int EOPNOTSUPP = 130;

        /// <summary>
        /// 其他
        /// </summary>
        public const int EOTHER = 131;

        /// <summary>
        /// 值太大
        /// </summary>
        public const int EOVERFLOW = 132;

        /// <summary>
        /// 所有者亡
        /// </summary>
        public const int EOWNERDEAD = 133;

        /// <summary>
        /// 协议错误
        /// </summary>
        public const int EPROTO = 134;




        /// <summary>
        /// 协议不受支持
        /// </summary>
        public const int EPROTONOSUPPORT = 135;

        /// <summary>
        /// 协议类型错误
        /// </summary>
        public const int EPROTOTYPE = 136;

        /// <summary>
        /// 流超时
        /// </summary>
        public const int ETIME = 137;

        /// <summary>
        /// 已超时
        /// </summary>
        public const int ETIMEDOUT = 138;

        /// <summary>
        /// 文本文件繁忙
        /// </summary>
        public const int ETXTBSY = 139;




        /// <summary>
        /// 操作将阻塞
        /// </summary>
        public const int EWOULDBLOCK = 140;


        #endregion


        private static string GetErrorString(int code)
        {
            switch (code)
            {
                case 0: return "成功。";
                case 1: return "功能错误。";
                case 2: return "系统找不到指定的文件。";
                case 3: return "系统找不到指定的路径。";
                case 4: return "系统无法打开文件。";
                case 5: return "拒绝访问。";
                case 6: return "句柄无效。";
                case 7: return "存储控制块被损坏。";
                case 8: return "存储空间不足，无法处理此命令。";
                case 9: return "存储控制块地址无效。";
                case 10: return "环境错误。";
                case 11: return "试图加载格式错误的程序。";
                case 12: return "访问码无效。";
                case 13: return "数据无效。";
                case 14: return "存储器不足，无法完成此操作。";
                case 15: return "系统找不到指定的驱动器。";
                case 16: return "无法删除目录。";
                case 17: return "系统无法将文件移到不同的驱动器。";
                case 18: return "没有更多文件。";
                case 19: return "介质受写入保护。";
                case 20: return "系统找不到指定的设备。";
                case 21: return "设备未就绪。";
                case 22: return "设备不识别此命令。";
                case 23: return "数据错误 (循环冗余检查)。";
                case 24: return "程序发出命令，但命令长度不正确。";
                case 25: return "驱动器无法找出磁盘上特定区域或磁道的位置。";
                case 26: return "无法访问指定的磁盘或软盘。";
                case 27: return "驱动器找不到请求的扇区。";
                case 28: return "打印机缺纸。";
                case 29: return "系统无法写入指定的设备。";
                case 30: return "系统无法从指定的设备上读取。";
                case 31: return "连到系统上的设备没有发挥作用。";
                case 32: return "进程无法访问文件，因为另一个程序正在使用此文件。";
                case 33: return "进程无法访问文件，因为另一个程序已锁定文件的一部分。";
                case 36: return "用来共享的打开文件过多。";
                case 38: return "到达文件结尾。";
                case 39: return "磁盘已满。";
                case 50: return "不支持网络请求。";
                case 51: return "远程计算机不可用 。";
                case 52: return "在网络上已有重复的名称。";
                case 53: return "找不到网络路径。";
                case 54: return "网络忙。";
                case 55: return "指定的网络资源或设备不再可用。";
                case 56: return "已到达网络 BIOS 命令限制。";
                case 57: return "网络适配器硬件出错。";
                case 58: return "指定的服务器无法运行请求的操作。";
                case 59: return "发生意外的网络错误。";
                case 60: return "远程适配器不兼容。";
                case 61: return "打印机队列已满。";
                case 62: return "无法在服务器上获得用于保存待打印文件的空间。";
                case 63: return "删除等候打印的文件。";
                case 64: return "指定的网络名不再可用。";
                case 65: return "拒绝网络访问。";
                case 66: return "网络资源类型错误。";
                case 67: return "找不到网络名。";
                case 68: return "超过本地计算机网卡的名称限制。";
                case 69: return "超出网络 BIOS 会话限制。";
                case 70: return "远程服务器已暂停，或正在启动过程中。";
                case 71: return "当前已无法再同此远程计算机连接，因为已达到计算机的连接数目极限。";
                case 72: return "已暂停指定的打印机或磁盘设备。";
                case 80: return "文件存在。";
                case 82: return "无法创建目录或文件。";
                case 83: return "INT 24 失败。";
                case 84: return "无法取得处理此请求的存储空间。";
                case 85: return "本地设备名已在使用中。";
                case 86: return "指定的网络密码错误。";
                case 87: return "参数错误。";
                case 88: return "网络上发生写入错误。";
                case 89: return "系统无法在此时启动另一个进程。";
                case 100: return "无法创建另一个系统信号灯。";
                case 101: return "另一个进程拥有独占的信号灯。";
                case 102: return "已设置信号灯且无法关闭。";
                case 103: return "无法再设置信号灯。";
                case 104: return "无法在中断时请求独占的信号灯。";
                case 105: return "此信号灯的前一个所有权已结束。";
                case 107: return "程序停止，因为替代的软盘未插入。";
                case 108: return "磁盘在使用中，或被另一个进程锁定。";
                case 109: return "管道已结束。";
                case 110: return "系统无法打开指定的设备或文件。";
                case 111: return "文件名太长。";
                case 112: return "磁盘空间不足。";
                case 113: return "无法再获得内部文件的标识。";
                case 114: return "目标内部文件的标识不正确。 〖117〗-应用程序制作的 IOCTL 调用错误。";
                case 118: return "验证写入的切换参数值错误。";
                case 119: return "系统不支持请求的命令。";
                case 120: return "此功能只被此系统支持。";
                case 121: return "信号灯超时时间已到。";
                case 122: return "传递到系统调用的数据区太小。";
                case 123: return "文件名、目录名或卷标语法不正确。";
                case 124: return "系统调用级别错误。";
                case 125: return "磁盘没有卷标。";
                case 126: return "找不到指定的模块。";
                case 127: return "找不到指定的程序。";
                case 128: return "没有等候的子进程。";
                case 130: return "试图使用操作(而非原始磁盘 I/O)的已打开磁盘分区的文件句柄。";
                case 131: return "试图移动文件指针到文件开头之前。";
                case 132: return "无法在指定的设备或文件上设置文件指针。";
                case 133: return "包含先前加入驱动器的驱动器无法使用 JOIN 或 SUBST 命令。";
                case 134: return "试图在已被合并的驱动器上使用 JOIN 或 SUBST 命令。";
                case 135: return "试图在已被合并的驱动器上使用 JOIN 或 SUBST 命令。";
                case 136: return "系统试图解除未合并驱动器的 JOIN。";
                case 137: return "系统试图解除未替代驱动器的 SUBST。";
                case 138: return "系统试图将驱动器合并到合并驱动器上的目录。";
                case 139: return "系统试图将驱动器替代为替代驱动器上的目录。";
                case 140: return "系统试图将驱动器合并到替代驱动器上的目录。";
                case 141: return "系统试图替代驱动器为合并驱动器上的目录。";
                case 142: return "系统无法在此时运行 JOIN 或 SUBST。";
                case 143: return "系统无法将驱动器合并到或替代为相同驱动器上的目录。";
                case 144: return "目录并非根目录下的子目录。";
                case 145: return "目录非空。";
                case 146: return "指定的路径已在替代中使用。";
                case 147: return "资源不足，无法处理此命令。";
                case 148: return "指定的路径无法在此时使用。";
                case 149: return "企图将驱动器合并或替代为驱动器上目录是上一个替代的目标的驱动器。";
                case 150: return "系统跟踪信息未在 CONFIG.SYS 文件中指定，或不允许跟踪。";
                case 151: return "为 DosMuxSemWait 指定的信号灯事件个数错误。";
                case 152: return "DosMuxSemWait 不可运行。已设置过多的信号灯。";
                case 153: return "DosMuxSemWait 清单错误。";
                case 154: return "输入的卷标超过目标文件系统的长度限制";
                case 155: return "无法创建另一个线程。";
                case 156: return "接收进程已拒绝此信号。";
                case 157: return "段已被放弃且无法锁定。";
                case 158: return "段已解除锁定。";
                case 159: return "线程标识的地址错误。";
                case 160: return "传递到 DosExecPgm 的参数字符串错误。";
                case 161: return "指定的路径无效。";
                case 162: return "信号已暂停。";
                case 164: return "无法在系统中创建更多的线程。";
                case 167: return "无法锁定文件区域。";
                case 170: return "请求的资源在使用中。";
                case 173: return "对于提供取消区域进行锁定的请求不明显。";
                case 174: return "文件系统不支持锁定类型的最小单元更改。";
                case 180: return "系统检测出错误的段号。";
                case 183: return "当文件已存在时，无法创建该文件。";
                case 186: return "传递的标志错误。";
                case 187: return "找不到指定的系统信号灯名称。";
                case 193: return "不是有效的WIN32应用程序。如果是LoadLibrary/LoadLibraryEx，则表示DLL或DLL依赖库有错误，例如：有可能是版本不同，32位程序调用了64位DLL。";
                case 196: return "操作系统无法运行此应用程序。";
                case 197: return "操作系统当前的配置不能运行此应用程序。";
                case 199: return "操作系统无法运行此应用程序。";
                case 200: return "代码段不可大于或等于 64K。";
                case 203: return "操作系统找不到已输入的环境选项。";
                case 205: return "命令子树中的进程没有信号处理程序。";
                case 206: return "文件名或扩展名太长。";
                case 207: return "第 2 环堆栈已被占用。";
                case 208: return "没有正确输入文件名通配符 * 或 ?，或指定过多的文件名通配符。";
                case 209: return "正在发送的信号错误。〖210〗-无法设置信号处理程序。";
                case 212: return "段已锁定且无法重新分配。";
                case 214: return "连到该程序或动态链接模块的动态链接模块太多。";
                case 215: return "无法嵌套调用 LoadModule。";
                case 230: return "管道状态无效。";
                case 231: return "所有的管道实例都在使用中。";
                case 232: return "管道正在关闭中。";
                case 233: return "管道的另一端上无任何进程。";
                case 234: return "更多数据可用。";
                case 240: return "取消会话。";
                case 254: return "指定的扩展属性名无效。";
                case 255: return "扩展属性不一致。";
                case 258: return "等待的操作过时。";
                case 259: return "没有可用的数据了。";
                case 266: return "无法使用复制功能。";
                case 267: return "目录名无效。";
                case 275: return "扩展属性在缓冲区中不适用。";
                case 276: return "装在文件系统上的扩展属性文件已损坏。";
                case 277: return "扩展属性表格文件已满。";
                case 278: return "指定的扩展属性句柄无效。";
                case 282: return "装入的文件系统不支持扩展属性。";
                case 288: return "企图释放并非呼叫方所拥有的多用户终端运行程序。";
                case 298: return "发向信号灯的请求过多。";
                case 299: return "仅完成部分的 ReadProcessMemoty 或 WriteProcessMemory 请求。";
                case 300: return "操作锁定请求被拒绝。";
                case 301: return "系统接收了一个无效的操作锁定确认。";
                case 487: return "试图访问无效的地址。";
                case 534: return "算术结果超过 32 位。";
                case 535: return "管道的另一端有一进程。";
                case 536: return "等候打开管道另一端的进程。";
                case 994: return "拒绝访问扩展属性。";
                case 995: return "由于线程退出或应用程序请求，已放弃 I/O 操作。";
                case 996: return "重叠 I/O 事件不在信号状态中。";
                case 997: return "重叠 I/O 操作在进行中。";
                case 998: return "内存分配访问无效。";
                case 999: return "错误运行页内操作。";
                case 1001: return "递归太深；栈溢出。";
                case 1002: return "窗口无法在已发送的消息上操作。";
                case 1003: return "无法完成此功能。";
                case 1004: return "无效标志。";
                case 1005: return "此卷不包含可识别的文件系统。请确定所有请求的文件系统驱动程序已加载，且此卷未损坏。";
                case 1006: return "文件所在的卷已被外部改变，因此打开的文件不再有效。";
                case 1007: return "无法在全屏幕模式下运行请求的操作。";
                case 1008: return "试图引用不存在的令牌。";
                case 1009: return "配置注册表数据库损坏。";
                case 1010: return "配置注册表项无效。";
                case 1011: return "无法打开配置注册表项。";
                case 1012: return "无法读取配置注册表项。";
                case 1013: return "无法写入配置注册表项。";
                case 1014: return "注册表数据库中的某一文件必须使用记录或替代复制来恢复。恢复成功完成。";
                case 1015: return "注册表损坏。包含注册表数据的某一文件结构损坏，或系统的文件内存映像损坏，或因为替代副本、日志缺少或损坏而无法恢复文件。";
                case 1016: return "由注册表启动的 I/O 操作恢复失败。注册表无法读入、写出或清除任意一个包含注册表系统映像的文件。";
                case 1017: return "系统试图加载或还原文件到注册表，但指定的文件并非注册表文件格式。";
                case 1018: return "试图在标记为删除的注册表项上运行不合法的操作。";
                case 1019: return "系统无法配置注册表日志中所请求的空间。";
                case 1020: return "无法在已有子项或值的注册表项中创建符号链接。";
                case 1021: return "无法在易变父项下创建稳定子项。";
                case 1022: return "通知更改请求正在完成中，且信息并未返回到呼叫方的缓冲区中。当前呼叫方必须枚举文件来查找更改。";
                case 1051: return "已发送停止控制到服务，该服务被其它正在运行的服务所依赖。";
                case 1052: return "请求的控件对此服务无效";
                case 1053: return "服务并未及时响应启动或控制请求。 〖1054〗-无法创建此服务的线程。";
                case 1055: return "锁定服务数据库。";
                case 1056: return "服务的实例已在运行中。";
                case 1057: return "帐户名无效或不存在，或者密码对于指定的帐户名无效。";
                case 1058: return "无法启动服务，原因可能是它被禁用或与它相关联的设备没有启动。";
                case 1059: return "指定了循环服务依存。";
                case 1060: return "指定的服务并未以已安装的服务存在。";
                case 1061: return "服务无法在此时接受控制信息。";
                case 1062: return "服务未启动。";
                case 1063: return "服务进程无法连接到服务控制器上。";
                case 1064: return "当处理控制请求时，在服务中发生异常。";
                case 1065: return "指定的数据库不存在。";
                case 1066: return "服务已返回特定的服务错误码。";
                case 1067: return "进程意外终止。";
                case 1068: return "依存服务或组无法启动。";
                case 1069: return "由于登录失败而无法启动服务。";
                case 1070: return "启动后，服务停留在启动暂停状态。";
                case 1071: return "指定的服务数据库锁定无效。";
                case 1072: return "指定的服务已标记为删除。";
                case 1073: return "指定的服务已存在。";
                case 1074: return "系统当前以最新的有效配置运行。";
                case 1075: return "依存服务不存在，或已被标记为删除。";
                case 1076: return "已接受使用当前引导作为最后的有效控制设置。";
                case 1077: return "上次启动之后，仍未尝试引导服务。";
                case 1078: return "名称已用作服务名或服务显示名。";
                case 1079: return "此服务的帐户不同于运行于同一进程上的其它服务的帐户。";
                case 1080: return "只能为 Win32 服务设置失败操作，不能为驱动程序设置。";
                case 1081: return "这个服务所运行的处理和服务控制管理器相同。所以，如果服务处理程序意外中止的话，服务控制管理器无法进行任何操作。";
                case 1082: return "这个服务尚未设置恢复程序。";
                case 1083: return "配置成在该可执行程序中运行的这个服务不能执行该服务。";
                case 1100: return "已达磁带的实际结尾。";
                case 1101: return "磁带访问已达文件标记。";
                case 1102: return "已达磁带或磁盘分区的开头。";
                case 1103: return "磁带访问已达一组文件的结尾。";
                case 1104: return "磁带上不再有任何数据。";
                case 1105: return "磁带无法分区。";
                case 1106: return "在访问多卷分区的新磁带时，当前的块大小不正确。";
                case 1107: return "当加载磁带时，找不到分区信息。";
                case 1108: return "无法锁定媒体弹出功能。";
                case 1109: return "无法卸载介质。";
                case 1110: return "驱动器中的介质可能已更改。";
                case 1111: return "复位 I/O 总线。";
                case 1112: return "驱动器中没有媒体。";
                case 1113: return "在多字节的目标代码页中，没有此 Unicode 字符可以映射到的字符。";
                case 1114: return "动态链接库 (DLL) 初始化例程失败。";
                case 1115: return "系统关机正在进行。";
                case 1116: return "因为没有任何进行中的关机过程，所以无法中断系统关机。";
                case 1117: return "因为 I/O 设备错误，所以无法运行此项请求。";
                case 1118: return "没有串行设备被初始化成功。串行驱动程序将卸载。";
                case 1119: return "无法打开正在与其他设备共享中断请求(IRQ)的设备。至少有一个使用该 IRQ 的其他设备已打开。";
                case 1120: return "序列 I/O 操作已由另一个串行口的写入完成。(IOCTL_SERIAL_XOFF_COUNTER 已达零。)";
                case 1121: return "因为已过超时时间，所以串行 I/O 操作完成。(IOCTL_SERIAL_XOFF_COUNTER 未达零。)";
                case 1122: return "在软盘上找不到 ID 地址标记。";
                case 1123: return "软盘扇区 ID 字符域与软盘控制器磁道地址不相符。";
                case 1124: return "软盘控制器报告软盘驱动程序不能识别的错误。";
                case 1125: return "软盘控制器返回与其寄存器中不一致的结果。";
                case 1126: return "当访问硬盘时，重新校准操作失败，重试仍然失败。";
                case 1127: return "当访问硬盘时，磁盘操作失败，重试仍然失败。";
                case 1128: return "当访问硬盘时，即使失败，仍须复位磁盘控制器。";
                case 1129: return "已达磁带结尾。";
                case 1130: return "服务器存储空间不足，无法处理此命令。";
                case 1131: return "检测出潜在的死锁状态。";
                case 1132: return "指定的基址或文件偏移量没有适当对齐。";
                case 1140: return "改变系统供电状态的尝试被另一应用程序或驱动程序否决。";
                case 1141: return "系统 BIOS 改变系统供电状态的尝试失败。";
                case 1142: return "试图在一文件上创建超过系统允许数额的链接。";
                case 1150: return "指定程序要求更新的 Windows 版本。";
                case 1151: return "指定程序不是 Windows 或 MS-DOS 程序。";
                case 1152: return "只能启动该指定程序的一个实例。";
                case 1153: return "该指定程序适用于旧的 Windows 版本。";
                case 1154: return "执行该应用程序所需的库文件之一被损坏。";
                case 1155: return "没有应用程序与此操作的指定文件有关联。";
                case 1156: return "在输送指令到应用程序的过程中出现错误。";
                case 1157: return "执行该应用程序所需的库文件之一无法找到。";
                case 1158: return "当前程序已使用了 Window 管理器对象的系统允许的所有句柄。";
                case 1159: return "消息只能与同步操作一起使用。";
                case 1160: return "指出的源元素没有媒体。";
                case 1161: return "指出的目标元素已包含媒体。";
                case 1162: return "指出的元素不存在。";
                case 1163: return "指出的元素是未显示的存储资源的一部分。";
                case 1164: return "显示设备需要重新初始化，因为硬件有错误。";
                case 1165: return "设备显示在尝试进一步操作之前需要清除。";
                case 1166: return "设备显示它的门仍是打开状态。";
                case 1167: return "设备没有连接。";
                case 1168: return "找不到元素。";
                case 1169: return "索引中没有同指定项相匹配的项。";
                case 1170: return "在对象上不存在指定的属性集。";
                case 1171: return "传递到 GetMouseMovePoints 的点不在缓冲区中。";
                case 1172: return "跟踪(工作站)服务没运行。";
                case 1173: return "找不到卷 ID。";
                case 1175: return "无法删除要被替换的文件。";
                case 1176: return "无法将替换文件移到要被替换的文件。要被替换的文件保持原来的名称。";
                case 1177: return "无法将替换文件移到要被替换的文件。要被替换的文件已被重新命名为备份名称。";
                case 1178: return "卷更改记录被删除。";
                case 1179: return "卷更改记录服务不处于活动中。";
                case 1180: return "找到一份文件，但是可能不是正确的文件。";
                case 1181: return "日志项从日志中被删除。";
                case 1200: return "指定的设备名无效。";
                case 1201: return "设备当前未连接上，但其为一个记录连接。";
                case 1202: return "企图记录先前已被记录的设备。";
                case 1203: return "无任何网络提供程序接受指定的网络路径。";
                case 1204: return "指定的网络提供程序名称无效。";
                case 1205: return "无法打开网络连接配置文件。";
                case 1206: return "网络连接配置文件损坏。";
                case 1207: return "无法枚举空载体。";
                case 1208: return "发生扩展错误。";
                case 1209: return "指定的组名格式无效。";
                case 1210: return "指定的计算机名格式无效。";
                case 1211: return "指定的事件名格式无效。";
                case 1212: return "指定的域名格式无效。";
                case 1213: return "指定的服务名格式无效。";
                case 1214: return "指定的网络名格式无效。";
                case 1215: return "指定的共享名格式无效。";
                case 1216: return "指定的密码格式无效。";
                case 1217: return "指定的消息名格式无效。";
                case 1218: return "指定的消息目标格式无效。";
                case 1219: return "提供的凭据与已存在的凭据集冲突。";
                case 1220: return "企图创建网络服务器的会话，但已对该服务器创建过多的会话。";
                case 1221: return "工作组或域名已由网络上的另一部计算机使用。";
                case 1222: return "网络未连接或启动。";
                case 1223: return "操作已被用户取消。";
                case 1224: return "请求的操作无法在使用用户映射区域打开的文件上执行。";
                case 1225: return "远程系统拒绝网络连接。";
                case 1226: return "网络连接已被适当地关闭了。";
                case 1227: return "网络传输终结点已有与其关联的地址。";
                case 1228: return "地址仍未与网络终结点关联。";
                case 1229: return "企图在不存在的网络连接上进行操作。";
                case 1230: return "企图在使用中的网络连接上进行无效的操作。";
                case 1231: return "不能访问网络位置。有关网络排除故障的信息，请参阅 Windows 帮助。";
                case 1232: return "不能访问网络位置。有关网络排除故障的信息，请参阅 Windows 帮助。";
                case 1233: return "不能访问网络位置。有关网络排除故障的信息，请参阅 Windows 帮助。";
                case 1234: return "没有任何服务正在远程系统上的目标网络终结点上操作。";
                case 1235: return "请求被终止。";
                case 1236: return "由本地系统终止网络连接。";
                case 1237: return "操作无法完成。应该重试。";
                case 1238: return "因为已达到此帐户的最大同时连接数限制，所以无法连接服务器。";
                case 1239: return "试图在这个帐户未被授权的时间内登录。";
                case 1240: return "此帐户并未得到从这个工作站登录的授权。";
                case 1241: return "请求的操作不能使用这个网络地址。";
                case 1242: return "服务器已经注册。";
                case 1243: return "指定的服务不存在。";
                case 1244: return "因为用户还未被验证，不能执行所要求的操作。";
                case 1245: return "因为用户还未登录网络，不能执行所要求的操作。指定的服务不存在。";
                case 1246: return "正在继续工作。";
                case 1247: return "试图进行初始操作，但是初始化已完成。";
                case 1248: return "没有更多的本地设备。";
                case 1249: return "指定的站点不存在。";
                case 1250: return "具有指定名称的域控制器已经存在。";
                case 1251: return "只有连接到服务器上时，该操作才受支持。";
                case 1252: return "即使没有改动，组策略框架也应该调用扩展。";
                case 1253: return "指定的用户没有一个有效的配置文件。";
                case 1254: return "Microsoft Small Business Server 不支持此操作。";
                case 1300: return "并非所有被引用的特权都指派给呼叫方。";
                case 1301: return "帐户名和安全标识间的某些映射未完成。";
                case 1302: return "没有为该帐户特别设置系统配额限制。";
                case 1303: return "没有可用的加密密钥。返回了一个已知加密密钥。";
                case 1304: return "密码太复杂，无法转换成 LAN Manager 密码。返回的 LAN Manager 密码为空字符串。";
                case 1305: return "修订级别未知。";
                case 1306: return "表明两个修订级别是不兼容的。";
                case 1307: return "这个安全标识不能指派为此对象的所有者。";
                case 1308: return "这个安全标识不能指派为对象的主要组。";
                case 1309: return "当前并未模拟客户的线程试图操作模拟令牌。";
                case 1310: return "组可能未被禁用。";
                case 1311: return "当前没有可用的登录服务器来服务登录请求。";
                case 1312: return "指定的登录会话不存在。可能已被终止。";
                case 1313: return "指定的特权不存在。";
                case 1314: return "客户没有所需的特权。";
                case 1315: return "提供的名称并非正确的帐户名形式。";
                case 1316: return "指定的用户已存在。";
                case 1317: return "指定的用户不存在。";
                case 1318: return "指定的组已存在。";
                case 1319: return "指定的组不存在。";
                case 1320: return "指定的用户帐户已是指定组的成员，或是因为组包含成员所以无法删除指定的组。";
                case 1321: return "指定的用户帐户不是指定组帐户的成员。";
                case 1322: return "无法禁用或删除最后剩余的系统管理帐户。";
                case 1323: return "无法更新密码。提供作为当前密码的值不正确。";
                case 1324: return "无法更新密码。提供给新密码的值包含密码中不允许的值。";
                case 1325: return "无法更新密码。为新密码提供的值不符合字符域的长度、复杂性或历史要求。";
                case 1326: return "登录失败: 未知的用户名或错误密码。";
                case 1327: return "登录失败: 用户帐户限制。";
                case 1328: return "登录失败: 违反帐户登录时间限制。";
                case 1329: return "登录失败: 不允许用户登录到此计算机。";
                case 1330: return "登录失败: 指定的帐户密码已过期。";
                case 1331: return "登录失败: 禁用当前的帐户。";
                case 1332: return "帐户名与安全标识间无任何映射完成。";
                case 1333: return "一次请求过多的本地用户标识符(LUIDs)。";
                case 1334: return "无更多可用的本地用户标识符(LUIDs)。";
                case 1335: return "对于该特别用法，安全 ID 的次级授权部分无效。";
                case 1336: return "访问控制列表(ACL)结构无效。";
                case 1337: return "安全 ID 结构无效。";
                case 1338: return "安全描述符结构无效。";
                case 1340: return "无法创建固有的访问控制列表(ACL)或访问控制项目(ACE)。";
                case 1341: return "服务器当前已禁用。";
                case 1342: return "服务器当前已启用。";
                case 1343: return "提供给识别代号颁发机构的值为无效值。";
                case 1344: return "无更多可用的内存以更新安全信息。";
                case 1345: return "指定属性无效，或与整个群体的属性不兼容。";
                case 1346: return "指定的模拟级别无效， 或所提供的模拟级别无效。";
                case 1347: return "无法打开匿名级安全令牌。";
                case 1348: return "请求的验证信息类别无效。";
                case 1349: return "令牌的类型对其尝试使用的方法不适当。";
                case 1350: return "无法在与安全性无关联的对象上运行安全性操作。";
                case 1351: return "未能从域控制器读取配置信息，或者是因为机器不可使用，或者是访问被拒绝。";
                case 1352: return "安全帐户管理器(SAM)或本地安全颁发机构(LSA)服务器处于运行安全操作的错误状态。";
                case 1353: return "域处于运行安全操作的错误状态。";
                case 1354: return "此操作只对域的主要域控制器可行。";
                case 1355: return "指定的域不存在，或无法联系。";
                case 1356: return "指定的域已存在。";
                case 1357: return "试图超出每服务器域个数的限制。";
                case 1358: return "无法完成请求操作，因为磁盘上的严重介质失败或数据结构损坏。";
                case 1359: return "出现了内部错误。";
                case 1360: return "通用访问类型包含于已映射到非通用类型的访问掩码中。";
                case 1361: return "安全描述符格式不正确 (绝对或自相关的)。";
                case 1362: return "请求操作只限制在登录进程中使用。调用进程未注册为一个登录进程。";
                case 1363: return "无法使用已在使用中的标识启动新的会话。";
                case 1364: return "未知的指定验证数据包。";
                case 1365: return "登录会话并非处于与请求操作一致的状态中。";
                case 1366: return "登录会话标识已在使用中。";
                case 1367: return "登录请求包含无效的登录类型值。";
                case 1368: return "在使用命名管道读取数据之前，无法经由该管道模拟。";
                case 1369: return "注册表子树的事务处理状态与请求状态不一致。";
                case 1370: return "安全性数据库内部出现损坏。";
                case 1371: return "无法在内置帐户上运行此操作。";
                case 1372: return "无法在内置特殊组上运行此操作。";
                case 1373: return "无法在内置特殊用户上运行此操作。";
                case 1374: return "无法从组中删除用户，因为当前组为用户的主要组。";
                case 1375: return "令牌已作为主要令牌使用。";
                case 1376: return "指定的本地组不存在。";
                case 1377: return "指定的帐户名不是本地组的成员。";
                case 1378: return "指定的帐户名已是本地组的成员。";
                case 1379: return "指定的本地组已存在。";
                case 1380: return "登录失败: 未授予用户在此计算机上的请求登录类型。";
                case 1381: return "已超过在单一系统中可保存机密的最大个数。";
                case 1382: return "机密的长度超过允许的最大长度。";
                case 1383: return "本地安全颁发机构数据库内部包含不一致性。";
                case 1384: return "在尝试登录的过程中，用户的安全上下文积累了过多的安全标识。";
                case 1385: return "登录失败: 未授予用户在此计算机上的请求登录类型。";
                case 1386: return "更改用户密码时需要交叉加密密码。";
                case 1387: return "由于成员不存在，无法将成员添加到本地组中，也无法从本地组将其删除。";
                case 1388: return "无法将新成员加入到本地组中，因为成员的帐户类型错误。";
                case 1389: return "已指定过多的安全标识。";
                case 1390: return "更改此用户密码时需要交叉加密密码。";
                case 1391: return "表明 ACL 未包含任何可承继的组件。";
                case 1392: return "文件或目录损坏且无法读取。";
                case 1393: return "磁盘结构损坏且无法读取。";
                case 1394: return "无任何指定登录会话的用户会话项。";
                case 1395: return "正在访问的服务有连接数目标授权限制。这时候已经无法再连接，原因是已经到达可接受的连接数目上限。";
                case 1396: return "登录失败: 该目标帐户名称不正确。";
                case 1397: return "相互身份验证失败。该服务器在域控制器的密码过期。";
                case 1398: return "在客户机和服务器之间有一个时间差。";
                case 1400: return "无效的窗口句柄。";
                case 1401: return "无效的菜单句柄。";
                case 1402: return "无效的光标句柄。";
                case 1403: return "无效的加速器表句柄。";
                case 1404: return "无效的挂钩句柄。";
                case 1405: return "无效的多重窗口位置结构句柄。";
                case 1406: return "无法创建最上层子窗口。";
                case 1407: return "找不到窗口类别。";
                case 1408: return "无效窗口；它属于另一线程。";
                case 1409: return "热键已注册。";
                case 1410: return "类别已存在。";
                case 1411: return "类别不存在。";
                case 1412: return "类别仍有打开的窗口。";
                case 1413: return "无效索引。";
                case 1414: return "无效的图标句柄。";
                case 1415: return "使用专用 DIALOG 窗口字。";
                case 1416: return "找不到列表框标识。";
                case 1417: return "找不到通配字符。";
                case 1418: return "线程没有打开的剪贴板。";
                case 1419: return "没有注册热键。";
                case 1420: return "窗口不是合法的对话窗口。";
                case 1421: return "找不到控件 ID。";
                case 1422: return "因为没有编辑控制，所以组合框的消息无效。";
                case 1423: return "窗口不是组合框。";
                case 1424: return "高度必须小于 256。";
                case 1425: return "无效的设备上下文(DC)句柄。";
                case 1426: return "无效的挂接程序类型。";
                case 1427: return "无效的挂接程序。";
                case 1428: return "没有模块句柄无法设置非本机的挂接。";
                case 1429: return "此挂接程序只可整体设置。";
                case 1430: return "Journal Hook 程序已安装。";
                case 1431: return "挂接程序尚未安装。";
                case 1432: return "单一选择列表框的无效消息。";
                case 1433: return "LB_SETCOUNT 发送到非被动的列表框。";
                case 1434: return "此列表框不支持 Tab 键宽度。";
                case 1435: return "无法毁坏由另一个线程创建的对象。";
                case 1436: return "子窗口没有菜单。";
                case 1437: return "窗口没有系统菜单。";
                case 1438: return "无效的消息对话框样式。";
                case 1439: return "无效的系统范围内的 (SPI_*) 参数。";
                case 1440: return "已锁定屏幕。";
                case 1441: return "多重窗口位置结构中窗口的所有句柄必须具有相同的上层。";
                case 1442: return "窗口不是子窗口。";
                case 1443: return "无效的 GW_* 命令。";
                case 1444: return "无效的线程标识。";
                case 1445: return "无法处理非多重文档界面 (MDI) 窗口中的消息。";
                case 1446: return "弹出式菜单已经激活。";
                case 1447: return "窗口没有滚动条。";
                case 1448: return "滚动条范围不可大于 MAXLONG。";
                case 1449: return "无法以指定的方式显示或删除窗口。";
                case 1450: return "系统资源不足，无法完成请求的服务。";
                case 1451: return "系统资源不足，无法完成请求的服务。";
                case 1452: return "系统资源不足，无法完成请求的服务。";
                case 1453: return "配额不足，无法完成请求的服务。";
                case 1454: return "配额不足，无法完成请求的服务。";
                case 1455: return "页面文件太小，无法完成操作。";
                case 1456: return "找不到菜单项。";
                case 1457: return "键盘布局句柄无效。";
                case 1458: return "不允许使用挂钩类型。";
                case 1459: return "该操作需要交互式窗口工作站。";
                case 1460: return "由于超时时间已过，该操作返回。";
                case 1461: return "无效监视器句柄。";
                case 1500: return "事件日志文件损坏。";
                case 1501: return "无法打开事件日志文件，事件日志服务没有启动。";
                case 1502: return "事件日志文件已满。";
                case 1503: return "事件日志文件已在读取间更改。";
                case 1601: return "无法访问 Windows 安装服务。请与技术支持人员联系，确认 Windows 安装服务是否注册正确。";
                case 1602: return "用户取消了安装。";
                case 1603: return "安装时发生严重错误";
                case 1604: return "安装已挂起，未完成。";
                case 1605: return "这个操作只对当前安装的产品有效。";
                case 1606: return "功能 ID 未注册。";
                case 1607: return "组件 ID 并未注册。";
                case 1608: return "未知属性。";
                case 1609: return "句柄处于不正确的状态。";
                case 1610: return "这个产品的配置数据已损坏。请与技术支持人员联系。";
                case 1611: return "组件限制语不存在。";
                case 1612: return "这个产品的安装来源无法使用。请验证来源是否存在，是否可以访问。";
                case 1613: return "Windows 安装服务无法安装这个安装程序包。您必须安装含有 Windows 安装服务新版本的 Windows Service Park。";
                case 1614: return "没有卸载产品。";
                case 1615: return "SQL 查询语法不正确或不被支持。";
                case 1616: return "记录字符域不存在。";
                case 1617: return "设备已被删除.";
                case 1618: return "正在进行另一个安装操作。请在继续这个安装操作之前完成那个操作。";
                case 1619: return "未能打开这个安装程序包。请验证程序包是否存在，是否可以访问；或者与应用程序供应商联系，验证这是否是有效的 Windows 安装服务程序包。";
                case 1620: return "未能打开这个安装程序包。请与应用程序供应商联系，验证这是否是有效的 Windows 安装服务程序包。";
                case 1621: return "启动 Windows 安装服务用户界面时有错误。请与技术支持人员联系。";
                case 1622: return "打开安装日志文件的错误。请验证指定的日志文件位置是否存在，是否可以写入。";
                case 1623: return "安装程序包的语言不受系统支持。";
                case 1624: return "应用变换时的错误。请验证指定的变换路径是否有效。";
                case 1625: return "系统策略禁止这个安装。请与系统管理员联系。";
                case 1626: return "无法执行函数。";
                case 1627: return "执行期间，函数出了问题。";
                case 1628: return "指定了无效的或未知的表格。";
                case 1629: return "提供的数据类型不对。";
                case 1630: return "这个类型的数据不受支持。";
                case 1631: return "Windows 安装服务未能启动。请与技术支持人员联系。";
                case 1632: return "临时文件夹已满或无法使用。请验证临时文件夹是否存在，是否可以写入。";
                case 1633: return "这个处理器类型不支持该安装程序包。请与产品供应商联系。";
                case 1634: return "组件没有在这台计算机上使用。";
                case 1635: return "无法打开修补程序包。请验证修补程序包是否存在，是否可以访问；或者与应用程序供应商联系，验证这是否是Windows 安装服务的修补程序包。";
                case 1636: return "无法打开修补程序包。请与应用程序供应商联系，验证这是否是 Windows 安装服务的修补程序包。";
                case 1637: return "Windows 安装服务无法处理这个插入程序包。您必须安装含有 Windows 安装服务新版本的 Windows Service Pack。";
                case 1638: return "已安装这个产品的另一个版本。这个版本的安装无法继续。要配置或删除这个产品的现有版本，请用“控制面板”上的“添加/删除程序”。";
                case 1639: return "无效的命令行参数。有关详细的命令行帮助，请查阅 Windows 安装服务的 SDK。";
                case 1640: return "在终端服务远程会话期间，只有管理员有添加、删除或配置服务器软件的权限。如果您要在服务器上安装或配置软件，请与网络管理员联系。";
                case 1641: return "要求的操作已成功结束。要使改动生效，必须重新启动系统。";
                case 1642: return "Windows 安装服务无法安装升级修补程序，因为被升级的程序可能会丢失或是升级修补程序可能更新此程序的一个不同版本。请确认要被升级的程序在您的计算机上且您的升级修补程序是正确的。";
                case 1700: return "串绑定无效。";
                case 1701: return "绑定句柄类型不正确。";
                case 1702: return "绑定句柄无效。";
                case 1703: return "不支持 RPC 协议序列。";
                case 1704: return "RPC 协议序列无效。";
                case 1705: return "字符串通用唯一标识 (UUID) 无效。";
                case 1706: return "终结点格式无效。";
                case 1707: return "网络地址无效。";
                case 1708: return "找不到终结点。";
                case 1709: return "超时值无效。";
                case 1710: return "找不到对象通用唯一标识(UUID)。";
                case 1711: return "对象通用唯一标识 (UUID)已注册。";
                case 1712: return "类型通用唯一标识(UUID)已注册。";
                case 1713: return "RPC 服务器已在侦听。";
                case 1714: return "未登记任何协议序列。";
                case 1715: return "RPC 服务器未在侦听。";
                case 1716: return "未知的管理器类型。";
                case 1717: return "未知的界面。";
                case 1718: return "没有任何链接。";
                case 1719: return "无任何协议顺序。";
                case 1720: return "无法创建终结点。";
                case 1721: return "资源不足，无法完成此操作。";
                case 1722: return "RPC 服务器不可用。";
                case 1723: return "RPC 服务器过忙以致无法完成此操作。";
                case 1724: return "网络选项无效。";
                case 1725: return "在此线程中，没有使用中的远程过程调用。";
                case 1726: return "远程过程调用失败。";
                case 1727: return "远程过程调用失败且未运行。";
                case 1728: return "远程过程调用(RPC)协议出错。";
                case 1730: return "RPC 服务器不支持传送语法。";
                case 1732: return "不支持通用唯一标识(UUID)类型。";
                case 1733: return "标记无效。";
                case 1734: return "数组边界无效。";
                case 1735: return "链接不包含项目名称。";
                case 1736: return "名称语法无效。";
                case 1737: return "不支持名称语法。";
                case 1739: return "没有可用来创建通用唯一标识 (UUID)的网络地址。";
                case 1740: return "终结点是一份备份。";
                case 1741: return "未知的验证类型。";
                case 1742: return "调用的最大个数太小。";
                case 1743: return "字符串太长。";
                case 1744: return "找不到 RPC 协议顺序。";
                case 1745: return "过程号超出范围。";
                case 1746: return "绑定不包含任何验证信息。";
                case 1747: return "未知的验证服务。";
                case 1748: return "未知的验证级别。";
                case 1749: return "安全上下文无效。";
                case 1750: return "未知的授权服务。";
                case 1751: return "项目无效。";
                case 1752: return "服务器终结点无法运行操作。";
                case 1753: return "终结点映射表中无更多的可用终结点。";
                case 1754: return "未导出任何界面。";
                case 1755: return "项目名称不完整。";
                case 1756: return "版本选项无效。";
                case 1757: return "没有其他成员。";
                case 1758: return "没有内容未导出。";
                case 1759: return "接口没有找到。";
                case 1760: return "项目已存在。";
                case 1761: return "找不到项目。";
                case 1762: return "无可用的名称服务。";
                case 1763: return "网络地址族无效。";
                case 1764: return "不支持请求的操作。";
                case 1765: return "无可用的安全上下文以允许模拟。";
                case 1766: return "远程过程调用(RPC)中发生内部错误。";
                case 1767: return "RPC 服务器试图以零除整数。";
                case 1768: return "RPC 服务器中发生地址错误。";
                case 1769: return "RPC 服务器上的浮点操作导至以零做除数。";
                case 1770: return "RPC 服务器上发生浮点下溢。";
                case 1771: return "RPC 服务器上发生浮点上溢。";
                case 1772: return "自动句柄绑定的可用 RPC 服务器列表已用完。";
                case 1773: return "无法打开字符翻译表文件。";
                case 1774: return "包含字符翻译表的文件少于512 字节。";
                case 1775: return "在远程过程调用时，将空的上下文句柄从客户传递到主机。";
                case 1777: return "在远程过程调用时，上下文句柄已更改。";
                case 1778: return "传递到远程过程调用的绑定句柄不相符。";
                case 1779: return "承接体无法获得远程过程调用句柄。";
                case 1780: return "传递空引用指针到承接体。";
                case 1781: return "列举值超出范围。";
                case 1782: return "字节计数太小。";
                case 1783: return "承接体接收到坏数据。";
                case 1784: return "提供给请求操作的用户缓冲区无效。";
                case 1785: return "磁盘媒体无法识别。可能未被格式化。";
                case 1786: return "工作站没有信任机密。";
                case 1787: return "服务器上的安全数据库没有此工作站信任关系的计算机帐户。";
                case 1788: return "主域和受信域间的信任关系失败。";
                case 1789: return "此工作站和主域间的信任关系失败。";
                case 1790: return "网络登录失败。";
                case 1791: return "此线程的远程过程调用已在进行中。";
                case 1792: return "试图登录，但是网络登录服务没有启动。";
                case 1793: return "用户帐户到期。";
                case 1794: return "转发程序已被占用且无法卸载。";
                case 1795: return "指定的打印机驱动程序已安装。";
                case 1796: return "指定的端口未知。";
                case 1797: return "未知的打印机驱动程序。";
                case 1798: return "未知的打印机处理器。";
                case 1799: return "指定的分隔页文件无效。";
                case 1800: return "指定的优先级无效。";
                case 1801: return "打印机名无效。";
                case 1802: return "打印机已存在。";
                case 1803: return "打印机命令无效。";
                case 1804: return "指定的数据类型无效。";
                case 1805: return "指定的环境无效。";
                case 1806: return "没有更多的绑定。";
                case 1807: return "所用帐户为域间信任帐户。请使用您的全局用户帐户或本地用户帐户来访问这台服务器。";
                case 1808: return "所用帐户是一个计算机帐户。使用您的全局用户帐户或本地用户帐户来访问此服务器。";
                case 1809: return "已使用的帐户为服务器信任帐户。使用您的全局用户帐户或本地用户帐户来访问此服务器。";
                case 1810: return "指定域的名称或安全标识(SID)与该域的信任信息不一致。";
                case 1811: return "服务器在使用中且无法卸载。";
                case 1812: return "指定的映像文件不包含资源区域。";
                case 1813: return "找不到映像文件中指定的资源类型。";
                case 1814: return "找不到映像文件中指定的资源名。";
                case 1815: return "找不到映像文件中指定的资源语言标识。";
                case 1816: return "配额不足，无法处理此命令。";
                case 1817: return "未登记任何界面。";
                case 1818: return "远程过程调用被取消。";
                case 1819: return "绑定句柄不包含所有需要的信息。";
                case 1820: return "在远程过程调用过程中通讯失败。";
                case 1821: return "不支持请求的验证级别。";
                case 1822: return "未登记任何主名称。";
                case 1823: return "指定的错误不是有效的 Windows RPC 错误码。";
                case 1824: return "已配置一个只在这部计算机上有效的 UUID。";
                case 1825: return "发生一个安全包特有的错误。";
                case 1826: return "线程未取消。";
                case 1827: return "无效的编码/解码句柄操作。";
                case 1828: return "序列化包装的版本不兼容。";
                case 1829: return "RPC 承接体的版本不兼容。";
                case 1830: return "RPC 管道对象无效或已损坏。";
                case 1831: return "试图在 RPC 管道物件上进行无效操作。";
                case 1832: return "不被支持的 RPC 管道版本。";
                case 1898: return "找不到该组成员。";
                case 1899: return "无法创建终结点映射表数据库项。";
                case 1900: return "对象通用唯一标识 (UUID) 为 nil UUID。";
                case 1901: return "指定的时间无效。";
                case 1902: return "指定的格式名称无效。";
                case 1903: return "指定的格式大小无效。";
                case 1904: return "指定的打印机句柄正等候在";
                case 1905: return "已删除指定的打印机。";
                case 1906: return "打印机的状态无效。";
                case 1907: return "在第一次登录之前，必须更改用户密码。";
                case 1908: return "找不到此域的域控制器。";
                case 1909: return "引用的帐户当前已锁定，且可能无法登录。";
                case 1910: return "没有发现指定的此对象导出者";
                case 1911: return "没有发现指定的对象。";
                case 1912: return "没有发现指定的对象解析器。";
                case 1913: return "一些待发数据仍停留在请求缓冲区内。";
                case 1914: return "无效的异步远程过程调用句柄。";
                case 1915: return "这个操作的异步 RPC 调用句柄不正确。";
                case 1916: return "RPC 管道对象已经关闭。";
                case 1917: return "在 RPC 调用完成之前全部的管道都已处理完成。";
                case 1918: return "没有其他可用的数据来自 RPC 管道。";
                case 1919: return "这个机器没有可用的站点名。";
                case 1920: return "系统无法访问此文件。";
                case 1921: return "系统无法辨识文件名。";
                case 1922: return "项目不是所要的类型。";
                case 1923: return "无法将所有对象的 UUID 导出到指定的项。";
                case 1924: return "无法将界面导出到指定的项。";
                case 1925: return "无法添加指定的配置文件项。";
                case 1926: return "无法添加指定的配置文件元素。";
                case 1927: return "无法删除指定的配置文件元素。";
                case 1928: return "无法添加组元素。";
                case 1929: return "无法删除组元素。";
                case 2000: return "无效的像素格式。";
                case 2001: return "指定的驱动程序无效。";
                case 2002: return "窗口样式或类别属性对此操作无效。";
                case 2003: return "不支持请求的图元操作。";
                case 2004: return "不支持请求的变换操作。";
                case 2005: return "不支持请求的剪切操作。";
                case 2010: return "指定的颜色管理模块无效。";
                case 2011: return "制定的颜色文件配置无效。";
                case 2012: return "找不到指定的标识。";
                case 2013: return "找不到所需的标识。";
                case 2014: return "指定的标识已经存在。";
                case 2015: return "指定的颜色文件配置与任何设备都不相关。";
                case 2016: return "找不到该指定的颜色文件配置";
                case 2017: return "指定的颜色空间无效。";
                case 2018: return "图像颜色管理没有启动。";
                case 2019: return "在删除该颜色传输时有一个错误。";
                case 2020: return "该指定的颜色传输无效。";
                case 2021: return "该指定的变换与位图的颜色空间不匹配。";
                case 2022: return "该指定的命名颜色索引在配置文件中不存在。";
                case 2102: return "没有安装工作站驱动程序。";
                case 2103: return "无法定位服务器。";
                case 2104: return "发生内部错误，网络无法访问共享内存段。";
                case 2105: return "网络资源不足。";
                case 2106: return "工作站不支持这项操作。";
                case 2107: return "设备没有连接。";
                case 2108: return "网络连接已成功，但需要提示用户输入一个不同于原始指定的密码。";
                case 2114: return "没有启动服务器服务。";
                case 2115: return "队列空。";
                case 2116: return "设备或目录不存在。";
                case 2117: return "无法在重定向的资源上执行这项操作。";
                case 2118: return "名称已经共享。";
                case 2119: return "服务器当前无法提供所需的资源。";
                case 2121: return "额外要求的项目超过允许的上限。";
                case 2122: return "对等服务只支持两个同时操作的用户 。";
                case 2123: return "API 返回缓冲区太小。";
                case 2127: return "远程 API 错误。";
                case 2131: return "打开或读取配置文件时出错。";
                case 2136: return "发生一般网络错误。";
                case 2137: return "工作站服务的状态不一致。重新启动工作站服务之前，请先重新启动计算机。";
                case 2138: return "工作站服务没有启动。";
                case 2139: return "所需信息不可用。";
                case 2140: return "发生 Windows 2000 内部错误。";
                case 2141: return "服务器没有设置事务处理。";
                case 2142: return "远程服务器不支持请求的 API。";
                case 2143: return "事件名无效。";
                case 2144: return "网络上已经有此计算机名。请更名后重新启动。";
                case 2146: return "配置信息中找不到指定的组件。";
                case 2147: return "配置信息中找不到指定的参数。";
                case 2149: return "配置文件中有一个命令行太长。";
                case 2150: return "打印机不存在。";
                case 2151: return "打印作业不存在。";
                case 2152: return "打印机目标找不到。";
                case 2153: return "打印机目标已经存在。";
                case 2154: return "打印机队列已经存在。";
                case 2155: return "无法添加其它的打印机。";
                case 2156: return "无法添加其它的打印作业。";
                case 2157: return "无法添加其它的打印机目标。";
                case 2158: return "此打印机目标处于空闲中，不接受控制操作。";
                case 2159: return "此“打印机目标请求”包含无效的控制函数。";
                case 2160: return "打印处理程序没有响应。";
                case 2161: return "后台处理程序没有运行。";
                case 2162: return "打印目标当前的状况，无法执行这项操作。";
                case 2163: return "打印机队列当前的状况，无法执行这项操作。";
                case 2164: return "打印作业当前的状况，无法执行这项操作。";
                case 2165: return "无法为后台处理程序分配内存。";
                case 2166: return "设备驱动程序不存在。";
                case 2167: return "打印处理程序不支持这种数据类型。";
                case 2168: return "没有安装打印处理程序。";
                case 2180: return "锁定服务数据库。";
                case 2181: return "服务表已满。";
                case 2182: return "请求的服务已经启动。";
                case 2183: return "这项服务没有响应控制操作。";
                case 2184: return "服务仍未启动。";
                case 2185: return "服务名无效。";
                case 2186: return "服务没有响应控制功能。";
                case 2187: return "服务控制处于忙碌状态。";
                case 2188: return "配置文件包含无效的服务程序名。";
                case 2189: return "在当前的状况下无法控制服务。";
                case 2190: return "服务异常终止。";
                case 2191: return "这项服务无法接受请求的 \"暂停\" 或 \"停止\" 操作。";
                case 2192: return "服务控制“计划程序”在“计划表”中找不到服务名。";
                case 2193: return "无法读取服务控制计划程序管道。";
                case 2194: return "无法创建新服务的线程。";
                case 2200: return "此工作站已经登录到局域网。";
                case 2201: return "工作站没有登录到局域网。";
                case 2202: return "指定的用户名无效。";
                case 2203: return "密码参数无效。";
                case 2204: return "登录处理器没有添加消息别名。";
                case 2205: return "登录处理器没有添加消息别名。";
                case 2206: return "注销处理器没有删除消息别名。";
                case 2207: return "注销处理器没有删除消息别名。";
                case 2209: return "暂停网络登录。";
                case 2210: return "中心登录服务器发生冲突。";
                case 2211: return "服务器没有设置正确的用户路径。";
                case 2212: return "加载或运行登录脚本时出错。";
                case 2214: return "没有指定登录服务器，计算机的登录状态是单机操作。";
                case 2215: return "登录服务器找不到。";
                case 2216: return "此计算机已经有一个登录域。";
                case 2217: return "登录服务器无法验证登录。";
                case 2219: return "安全数据库找不到。";
                case 2220: return "组名找不到。";
                case 2221: return "用户名找不到。";
                case 2222: return "资源名找不到。";
                case 2223: return "组已经存在。";
                case 2224: return "帐户已经存在。";
                case 2225: return "资源使用权限清单已经存在。";
                case 2226: return "此操作只能在该域的主域控制器上执行。";
                case 2227: return "安全数据库没有启动。";
                case 2228: return "用户帐户数据库中的名称太多。";
                case 2229: return "磁盘 I/O 失败。";
                case 2230: return "已经超过每个资源 64 个项目的限制。";
                case 2231: return "不得删除带会话的用户。";
                case 2232: return "上层目录找不到。";
                case 2233: return "无法添加到安全数据库会话高速缓存段。";
                case 2234: return "这项操作不能在此特殊的组上执行。";
                case 2235: return "用户帐户数据库会话高速缓存没有记录此用户。";
                case 2236: return "用户已经属于此组。";
                case 2237: return "用户不属于此组。";
                case 2238: return "此用户帐户尚未定义。";
                case 2239: return "此用户帐户已过期。";
                case 2240: return "此用户不得从此工作站登录网络。";
                case 2241: return "这时候不允许用户登录网络。";
                case 2242: return "此用户的密码已经过期。";
                case 2243: return "此用户的密码无法更改。";
                case 2244: return "现在无法使用此密码。";
                case 2245: return "密码不满足密码策略的需要。检查最小密码长度、密码复杂性和密码历史的需求。";
                case 2246: return "此用户的密码最近才启用，现在不能更改。";
                case 2247: return "安全数据库已损坏。";
                case 2248: return "不需要更新此副本复制的网络/本地安全数据库。";
                case 2249: return "此副本复制的数据库已过时；请同步处理其中的数据。";
                case 2250: return "此网络连接不存在。";
                case 2251: return "此 asg_type 无效。";
                case 2252: return "此设备当前正在共享中。";
                case 2270: return "计算机名无法作为消息别名添加。网络上可能已经有此名称。";
                case 2271: return "信使服务已经启动。";
                case 2272: return "信使服务启动失败。";
                case 2273: return "网络上找不到此消息别名。";
                case 2274: return "此消息别名已经转发出去。";
                case 2275: return "已经添加了此消息别名，但是仍被转发。";
                case 2276: return "此消息别名已在本地存在。";
                case 2277: return "添加的消息别名已经超过数目上限。";
                case 2278: return "无法删除计算机名。";
                case 2279: return "消息无法转发回到同一个工作站。";
                case 2280: return "域消息处理器出错。";
                case 2281: return "消息已经发送出去，但是收件者已经暂停信使服务。";
                case 2282: return "消息已经发送出去，但尚未收到。";
                case 2283: return "消息别名当前正在使用中。请稍候片刻再试。";
                case 2284: return "信使服务尚未启动。";
                case 2285: return "该名称不在本地计算机上。";
                case 2286: return "网络上找不到转发的消息别名。";
                case 2287: return "远程通讯站的消息别名表已经满了。";
                case 2288: return "此别名的消息当前没有在转发中。";
                case 2289: return "广播的消息被截断。";
                case 2294: return "设备名无效。";
                case 2295: return "写入出错。";
                case 2297: return "网络上的消息别名重复。";
                case 2298: return "此消息别名会在稍后删除。";
                case 2299: return "没有从所有的网络删除消息别名。";
                case 2300: return "这项操作无法在使用多种网络的计算机上执行。";
                case 2310: return "此共享的资源不存在。";
                case 2311: return "设备没有共享。";
                case 2312: return "带此计算机名的会话不存在。";
                case 2314: return "没有用此识别号打开的文件。";
                case 2315: return "执行远程管理命令失败。";
                case 2316: return "打开远程临时文件失败。";
                case 2317: return "从远程管理命令返回的数据已经被截断成 64K。";
                case 2318: return "此设备无法同时共享为后台处理资源和非后台处理资源。";
                case 2319: return "服务器清单中的信息可能不正确";
                case 2320: return "计算机在此域未处于活动状态";
                case 2321: return "在删除共享之前，需要将该共享从分布式文件系统中删除。";
                case 2331: return "无法在此设备执行这项操作";
                case 2332: return "此设备无法共享。";
                case 2333: return "此设备未打开。";
                case 2334: return "此设备名清单无效。";
                case 2335: return "队列优先级无效。";
                case 2337: return "没有任何共享的通讯设备。";
                case 2338: return "指定的队列不存在。";
                case 2340: return "此设备清单无效。";
                case 2341: return "请求的设备无效。";
                case 2342: return "后台处理程序正在使用此设备。";
                case 2343: return "此设备已经被当成通讯设备来使用。";
                case 2351: return "此计算机名无效。";
                case 2354: return "指定的字符串及前缀太长。";
                case 2356: return "此路径组成部分无效。";
                case 2357: return "无法判断输入类型。";
                case 2362: return "类型缓冲区不够大。";
                case 2370: return "配置文件不得超过 64K。";
                case 2371: return "初始偏移量越界。";
                case 2372: return "系统无法删除当前到网络资源的连接。";
                case 2373: return "系统无法分析此文件中的命令行。";
                case 2374: return "加载配置文件时出错。/";
                case 2375: return "保存配置文件时出错，只部份地保存了配置文件。";
                case 2378: return "此日志文件在前后两次读取之间已经发生变化。";
                case 2380: return "资源路径不可以是目录。";
                case 2381: return "资源路径无效。";
                case 2382: return "目标路径无效。";
                case 2383: return "源路径及目标路径分属不同的服务器。";
                case 2385: return "请求的 Run 服务器现在暂停。";
                case 2389: return "与 Run 服务器通讯时出错。";
                case 2391: return "启动后台处理时出错。";
                case 2392: return "找不到您连接的共享资源。";
                case 2400: return "LAN 适配器号码无效。";
                case 2401: return "此网络连接有文件打开或请求挂起。";
                case 2402: return "使用中的连接仍存在。";
                case 2403: return "此共享名或密码无效。";
                case 2404: return "设备正由活动进程使用，无法断开。";
                case 2405: return "此驱动器号已在本地使用。";
                case 2430: return "指定的客户已经在指定的事件注册。";
                case 2431: return "警报表已满。";
                case 2432: return "发出的警报名称无效或不存在。";
                case 2433: return "警报接收者无效。";
                case 2434: return "用户的登录时间长短不再合法。所以已经删除用户与该服务器的会话。";
                case 2440: return "日志文件中没有请求的记录号。";
                case 2450: return "用户帐户数据库没有正确配置。";
                case 2451: return "当 Netlogon 服务正在运行时，不允许执行这项操作。";
                case 2452: return "这项操作无法在最后的管理帐户上执行。";
                case 2453: return "找不到此域的域控制器。";
                case 2454: return "无法设置此用户的登录信息。";
                case 2455: return "Netlogon 服务尚未启动。";
                case 2456: return "无法添加到用户帐户数据库。";
                case 2457: return "此服务器的时钟与主域控制器的时钟不一致。";
                case 2458: return "检测到密码不匹配。";
                case 2460: return "服务器识别码没有指定有效的服务器。";
                case 2461: return "会话标识没有指定有效的会话。";
                case 2462: return "连接识别码没有指定有效的连接。";
                case 2463: return "可用服务器表中无法再加上其它项。";
                case 2464: return "服务器已经到了支持的会话数目上限。";
                case 2465: return "服务器已经到了支持的连接数目上限。";
                case 2466: return "服务器打开的文件到了上限，无法打开更多文件。";
                case 2467: return "这台服务器没有登记替换的服务器。";
                case 2470: return "请用低级的 API (远程管理协议)。";
                case 2480: return "UPS 服务无法访问 UPS 驱动程序。";
                case 2481: return "UPS 服务设置错误。";
                case 2482: return "UPS 服务无法访问指定通讯端口 (Comm Port)。";
                case 2483: return "UPS 显示线路中断或电池不足，服务没有启动。";
                case 2484: return "UPS 服务无法执行系统关机的操作。";
                case 2500: return "下面的程序返回一个 MS-DOS 错误码:";
                case 2501: return "下面的程序需要更多的内存:";
                case 2502: return "下面程序调用了不支持的 MS-DOS 函数:";
                case 2503: return "工作站无法启动。";
                case 2504: return "下面的文件已损坏。";
                case 2505: return "启动块定义文件中没有指定引导程序。";
                case 2506: return "NetBIOS 返回错误: NCB 及 SMB 数据转储。";
                case 2507: return "磁盘 I/O 错误。";
                case 2508: return "无法替换映像参数。";
                case 2509: return "跨越磁盘扇区范围的映像参数太多。";
                case 2510: return "不是从用 /S 格式化的 MS-DOS软盘产生的映像。";
                case 2511: return "稍后会从远程重新启动。";
                case 2512: return "无法调用远程启动服务器。";
                case 2513: return "无法连接到远程启动服务器。";
                case 2514: return "无法打开远程启动服务器上的映像文件。";
                case 2515: return "正在连接到远程启动服务器...";
                case 2516: return "正在连接到远程启动服务器...";
                case 2517: return "远程启动服务已经停止，请检测错误记录文件，查明出错的原因。";
                case 2518: return "远程启动失败，请检查错误日志文件，查明出错的原因。";
                case 2519: return "不允许第二个远程启动 (Remoteboot) 资源连接。";
                case 2550: return "浏览服务设置成 MaintainServerList=No。";
                case 2610: return "因为没有网卡与这项服务一起启动，所以无法启动服务。";
                case 2611: return "因为注册表中的启动信息不正确，所以无法启动服务。";
                case 2612: return "无法启动服务，原因是它的数据库找不到或损坏。";
                case 2613: return "因为找不到 RPLFILES 共享的资源，所以无法启动服务。";
                case 2614: return "因为找不到 RPLUSER 组，所以无法启动服务。";
                case 2615: return "无法枚举服务记录。";
                case 2616: return "工作站记录信息已损坏。";
                case 2617: return "工作站记录找不到。";
                case 2618: return "其它的工作站正在使用此工作站名。";
                case 2619: return "配置文件记录已损坏。";
                case 2620: return "配置文件记录找不到。";
                case 2621: return "其它的配置文件正在使用此名称。";
                case 2622: return "有很多工作站正在使用此配置文件。";
                case 2623: return "配置记录已损坏。";
                case 2624: return "配置记录找不到。";
                case 2625: return "适配器识别记录已损坏。";
                case 2626: return "内部服务出错。";
                case 2627: return "供应商识别记录已损坏。";
                case 2628: return "启动块记录已损坏。";
                case 2629: return "找不到此工作站的用户帐户记录。";
                case 2630: return "RPLUSER 本地组找不到。";
                case 2631: return "找不到启动块记录。";
                case 2632: return "所选的配置文件与此工作站不兼容。";
                case 2633: return "其它的工作站正在使用所选的网卡。";
                case 2634: return "有些配置文件正在使用此配置。";
                case 2635: return "有数个工作站、配置文件或配置正在使用此启动块。";
                case 2636: return "服务无法制作远程启动数据库的备份。";
                case 2637: return "找不到适配器记录。";
                case 2638: return "找不到供应商记录。";
                case 2639: return "其它供应商记录正在使用此供应商名称。";
                case 2640: return "其它的启动区记录正在使用启动名称或供应商识别记录。";
                case 2641: return "其它的配置正在使用此配置名称。";
                case 2660: return "由 Dfs 服务所维护的内部数据库已损坏";
                case 2661: return "内部数据库中的一条记录已 损坏";
                case 2662: return "输入项路径与卷路径不匹配";
                case 2663: return "给定卷名已存在";
                case 2664: return "指定的服务器共享已在 Dfs 中共享";
                case 2665: return "所显示的服务器共享不支持所显示的 Dfs 卷";
                case 2666: return "此操作在非叶卷上无效。";
                case 2667: return "此操作在叶卷上无效。";
                case 2668: return "此操作不明确，因为该卷存在多服务器。";
                case 2669: return "无法创建连接点";
                case 2670: return "该服务器不是 Dfs 可识别的";
                case 2671: return "指定的重命名目标路径无效。";
                case 2672: return "指定 Dfs 卷脱线";
                case 2673: return "指定的服务器不为此卷服务";
                case 2674: return "检测到 Dfs 名中的环路";
                case 2675: return "在基于服务器的 Dfs 上不支持该操作";
                case 2676: return "这个卷已经受该指定服务器共享支持";
                case 2677: return "无法删除这个卷的上一个服务器共享支持";
                case 2678: return "Inter-Dfs 卷不支持该操作";
                case 2679: return "Dfs 服务的内部状态已经变得不一致";
                case 2680: return "Dfs 服务已经安装在指定的服务器上";
                case 2681: return "被协调的 Dfs 数据是一样的";
                case 2682: return "无法删除 Dfs 根目录卷 - 如需要请卸载 Dfs";
                case 2683: return "该共享的子目录或父目录已经存在在一个 Dfs 中";
                case 2690: return "Dfs 内部错误";
                case 2691: return "这台机器已经加入域 。";
                case 2692: return "这个机器目前未加入域。";
                case 2693: return "这台机器是域控制器，而且无法从域中退出。";
                case 2694: return "目标域控制器不支持在 OU 中创建的机器帐户。";
                case 2695: return "指定的工作组名无效";
                case 2696: return "指定的计算机名与域控制器上使用的默认语言不兼容。";
                case 2697: return "找不到指定的计算机帐户。";
                case 2999: return "这是 NERR 范围内的最后一个错误。";
                case 3000: return "指定了未知的打印监视器。";
                case 3001: return "指定的打印机驱动程序当前正在使用。";
                case 3002: return "找不到缓冲文件。";
                case 3003: return "未发送 StartDocPrinter 调用。";
                case 3004: return "未发送 AddJob 调用。";
                case 3005: return "指定的打印处理器已经安装。";
                case 3006: return "指定的打印监视器已经安装。";
                case 3007: return "该指定的打印监视器不具备所要求的功能。";
                case 3008: return "该指定的打印监视器正在使用中。";
                case 3009: return "当打印机有作业排成队列时此操作请求是不允许的。";
                case 3010: return "请求的操作成功。直到重新启动系统前更改将不会生效。";
                case 3011: return "请求的操作成功。直到重新启动服务前更改将不会生效。";
                case 3012: return "找不到打印机。";
                case 3023: return "用户指定的关机命令文件，它的配置有问题。不过 UPS 服务已经启动。";
                case 3029: return "因为用户帐户数据库 (NET.ACC) 找不到或损坏，而且也没有可用的备份数据库，所以不能启动本地安全机制。系统不安全！";
                case 3037: return "@I *登录小时数";
                case 3039: return "已经超过一个目录中文件的副本复制的限制。";
                case 3040: return "已经超过副本复制的目录树深度限制。";
                case 3046: return "无法登录。用户当前已经登录，同时参数 TRYUSER设置为 NO。";
                case 3052: return "命令行或配置文件中没有提供必要的参数。";
                case 3054: return "无法满足资源的请求。";
                case 3055: return "系统配置有问题。";
                case 3056: return "系统出错。";
                case 3057: return "发生内部一致性的错误。";
                case 3058: return "配置文件或命令行的选项不明确。";
                case 3059: return "配置文件或命令行的参数重复。";
                case 3060: return "服务没有响应控制，DosKillProc 函数已经停止服务。";
                case 3061: return "运行服务程序时出错。";
                case 3062: return "无法启动次级服务。";
                case 3064: return "文件有问题。";
                case 3070: return "内存";
                case 3071: return "磁盘空间";
                case 3072: return "线程";
                case 3073: return "过程";
                case 3074: return "安全性失败。";
                case 3075: return "LAN Manager 根目录不正确或找不到。";
                case 3076: return "未安装网络软件。";
                case 3077: return "服务器未启动。";
                case 3078: return "服务器无法访问用户帐户数据库 (NET.ACC)。";
                case 3079: return "LANMAN 树中安装的文件不兼容。";
                case 3080: return "LANMAN/LOGS 目录无效。";
                case 3081: return "指定的域无法使用。";
                case 3082: return "另一计算机正将此计算机名当作消息别名使用。";
                case 3083: return "宣布服务器名失败。";
                case 3084: return "用户帐户数据库没有正确配置。";
                case 3085: return "服务器没有运行用户级安全功能。";
                case 3087: return "工作站设置不正确。";
                case 3088: return "查看您的错误日志文件以了解详细信息。";
                case 3089: return "无法写入此文件。";
                case 3090: return "ADDPAK 文件损坏。请删除 LANMAN/NETPROG/ADDPAK.SER后重新应用所有的 ADDPAK。";
                case 3091: return "因为没有运行 CACHE.EXE，所以无法启动 LM386 服务器。";
                case 3092: return "安全数据库中找不到这台计算机的帐户。";
                case 3093: return "这台计算机不是 SERVERS 组的成员。";
                case 3094: return "SERVERS 组没有在本地安全数据库中。";
                case 3095: return "此 Windows NT 计算机被设置为某个组的成员，并不是域的成员。此种配置下不需要运行 Netlogon 服务。";
                case 3096: return "找不到此域的 Windows NT 域控制器。";
                case 3098: return "服务无法与主域控制器进行验证。";
                case 3099: return "安全数据库文件创建日期或序号有问题。";
                case 3100: return "因为网络软件出错，所以无法执行操作。";
                case 3102: return "这项服务无法长期锁定网络控制块 (NCB) 的段。错误码就是相关数据。";
                case 3103: return "这项服务无法解除网络控制块 (NCB) 段的长期锁定。错误码就是相关数据。";
                case 3106: return "收到意外的网络控制块 (NCB)。NCB 就是相关数据。";
                case 3107: return "网络没有启动。";
                case 3108: return "NETWKSTA.SYS 的 DosDevIoctl 或 DosFsCtl 调用失败。显示的数据为以下格式:DWORD 值代表调用 Ioctl 或 FsCtl的 CS:IP WORD 错误代码WORD Ioctl 或 FsCtl 号";
                case 3111: return "发生意外的 NetBIOS 错误。错误码就是相关数据。";
                case 3112: return "收到的服务器消息块 (SMB) 无效。SMB 就是相关数据。";
                case 3114: return "因为缓冲区溢出，所以错误日志文件中部份的项目丢失。";
                case 3120: return "控制网络缓冲区以外资源用量的初始化参数被设置大小，因此需要的内存太多。";
                case 3121: return "服务器无法增加内存段的大小。";
                case 3124: return "服务器启动失败。三个 chdev参数必须同时为零或者同时不为零。";
                case 3129: return "服务器无法更新 AT 计划文件。文件损坏。";
                case 3130: return "服务器调用 NetMakeLMFileName 时出错。错误码就是相关数据。";
                case 3132: return "无法长期锁定服务器缓冲区。请检查交换磁盘的可用空间，然后重新启动系统以启动服务器。";
                case 3140: return "因为多次连续出现网络控制块 (NCB) 错误，所以停止服务。最后一个坏的 NCB 以原始数据形式出现。";
                case 3141: return "因为消息服务器共享的数据段被锁住，所以消息服务器已经停止运行。";
                case 3151: return "因为 VIO 调用出错，所以无法弹出显示消息。错误码就是相关数据。";
                case 3152: return "收到的服务器消息块 (SMB) 无效。SMB 就是相关数据。";
                case 3160: return "工作站信息段大于 64K。大小如下(以 DWORD 值的格式):";
                case 3161: return "工作站无法取得计算机的名称号码。";
                case 3162: return "工作站无法初始化 Async NetBIOS 线程。错误码就是相关数据。";
                case 3163: return "工作站无法打开最前面的共享段。错误码就是相关数据。";
                case 3164: return "工作站主机表已满。";
                case 3165: return "收到的邮筒服务器消息块 (SMB) 有问题，SMB 就是相关数据。";
                case 3166: return "工作站启动用户帐户数据库时出错。错误码就是相关数据。";
                case 3167: return "工作站响应 SSI 重新验证请求时出错。函数码及错误码就是相关数据。";
                case 3174: return "服务器无法读取 AT 计划文件。";
                case 3175: return "服务器发现错误的 AT 计划记录。";
                case 3176: return "服务器找不到 AT 计划文件，所以创建一个计划文件。";
                case 3185: return "因为用户帐户数据库 (NET.ACC) 找不到或损坏，而且也没有可用的备份数据库，所以不能启动本地安全机制。系统不安全！";
                case 3204: return "服务器无法创建线程。CONFIG.SYS 中的 THREADS 参数必须加大。";
                case 3213: return "已经超过一个目录中文件的副本复制的限制。";
                case 3214: return "已经超过副本复制的目录树深度限制。";
                case 3215: return "邮筒中收到的消息无法识别。";
                case 3217: return "无法登录。用户当前已经登录，同时参数 TRYUSER设置为 NO。";
                case 3230: return "检测到服务器的电源中断。";
                case 3231: return "UPS 服务已经关掉服务器。";
                case 3232: return "UPS 服务没有完成执行用户指定的关机命令文件。";
                case 3233: return "无法打开 UPS 驱动程序。错误码就是相关数据。";
                case 3234: return "电源已经恢复。";
                case 3235: return "用户指定的关机命令文件有问题。";
                case 3256: return "该项服务的动态链接库发生无法修复的错误。";
                case 3257: return "系统返回意外的错误码。错误码就是相关数据。";
                case 3258: return "容错错误日志文件 - LANROOT/LOGS/FT.LOG超过 64K。";
                case 3259: return "容错错误日志文件 - LANROOT/LOGS/FT.LOG，在被打开时就已设置更新进度位，这表示上次使用错误日志时，系统死机。";

            }

            return $"未知的错误码\"{code}\"";
        }
    }
}
